﻿// Apache开源许可证
//
// 版权所有 © 2018-2024 1.8K仔
//
// 特此免费授予获得本软件及其相关文档文件（以下简称“软件”）副本的任何人以处理本软件的权利，
// 包括但不限于使用、复制、修改、合并、发布、分发、再许可、销售软件的副本，
// 以及允许拥有软件副本的个人进行上述行为，但须遵守以下条件：
//
// 在所有副本或重要部分的软件中必须包括上述版权声明和本许可声明。
//
// 软件按“原样”提供，不提供任何形式的明示或暗示的保证，包括但不限于对适销性、适用性和非侵权的保证。
// 在任何情况下，作者或版权持有人均不对任何索赔、损害或其他责任负责，
// 无论是因合同、侵权或其他方式引起的，与软件或其使用或其他交易有关。

using Fast.Admin.Core.Enum.Common;
using Fast.Admin.Core.Enum.Db;

namespace Fast.Admin.Core.Entity.System.Account;

/// <summary>
/// <see cref="SysAccountModel"/> 系统账户信息表Model类
/// </summary>
[SugarTable("Sys_Account", "系统账户信息表")]
[SugarDbType(FastDbTypeEnum.SysCore)]
public class SysAccountModel : BaseEntity
{
    /// <summary>
    /// 账户
    /// </summary>
    [SugarColumn(ColumnDescription = "账户", ColumnDataType = "Nvarchar(20)", IsNullable = false,
        UniqueGroupNameList = new[] {nameof(Account)})]
    public string Account { get; set; }

    /// <summary>
    /// 密码
    /// </summary>
    [SugarColumn(ColumnDescription = "密码", ColumnDataType = "Nvarchar(50)", IsNullable = false)]
    public string Password { get; set; }

    /// <summary>
    /// 姓名
    /// </summary>
    [SugarColumn(ColumnDescription = "姓名", ColumnDataType = "Nvarchar(20)", IsNullable = false)]
    public string UserName { get; set; }

    /// <summary>
    /// 生日
    /// </summary>
    [SugarColumn(ColumnDescription = "生日", ColumnDataType = "datetimeoffset", IsNullable = true)]
    public DateTime? Birthday { get; set; }

    /// <summary>
    /// 性别
    /// </summary>
    [SugarColumn(ColumnDescription = "性别", ColumnDataType = "tinyint", IsNullable = false)]
    public GenderEnum Sex { get; set; }

    /// <summary>
    /// 邮箱
    /// </summary>
    [SugarColumn(ColumnDescription = "邮箱", ColumnDataType = "Nvarchar(50)", IsNullable = true,
        UniqueGroupNameList = new[] {nameof(Email)})]
    public string Email { get; set; }

    /// <summary>
    /// 手机
    /// </summary>
    [SugarColumn(ColumnDescription = "手机", ColumnDataType = "Nvarchar(20)", IsNullable = true,
        UniqueGroupNameList = new[] {nameof(Mobile)})]
    public string Mobile { get; set; }

    /// <summary>
    /// 电话
    /// </summary>
    [SugarColumn(ColumnDescription = "电话", ColumnDataType = "Nvarchar(20)", IsNullable = true)]
    public string Tel { get; set; }

    /// <summary>
    /// 状态
    /// </summary>
    [SugarColumn(ColumnDescription = "状态", ColumnDataType = "tinyint", IsNullable = false)]
    public CommonStatusEnum Status { get; set; } = CommonStatusEnum.Enable;
}